Autogenerated HTML docs for v1.5.4-rc0-36-g7680
diff --git a/technical/api-gitattributes.html b/technical/api-gitattributes.html new file mode 100644 index 0000000..d453853 --- /dev/null +++ b/technical/api-gitattributes.html
@@ -0,0 +1,424 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<meta name="generator" content="AsciiDoc 7.0.2" /> +<style type="text/css"> +/* Debug borders */ +p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { +/* + border: 1px solid red; +*/ +} + +body { + margin: 1em 5% 1em 5%; +} + +a { color: blue; } +a:visited { color: fuchsia; } + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +tt { + color: navy; +} + +h1, h2, h3, h4, h5, h6 { + color: #527bbd; + font-family: sans-serif; + margin-top: 1.2em; + margin-bottom: 0.5em; + line-height: 1.3; +} + +h1 { + border-bottom: 2px solid silver; +} +h2 { + border-bottom: 2px solid silver; + padding-top: 0.5em; +} + +div.sectionbody { + font-family: serif; + margin-left: 0; +} + +hr { + border: 1px solid silver; +} + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +pre { + padding: 0; + margin: 0; +} + +span#author { + color: #527bbd; + font-family: sans-serif; + font-weight: bold; + font-size: 1.2em; +} +span#email { +} +span#revision { + font-family: sans-serif; +} + +div#footer { + font-family: sans-serif; + font-size: small; + border-top: 2px solid silver; + padding-top: 0.5em; + margin-top: 4.0em; +} +div#footer-text { + float: left; + padding-bottom: 0.5em; +} +div#footer-badges { + float: right; + padding-bottom: 0.5em; +} + +div#preamble, +div.tableblock, div.imageblock, div.exampleblock, div.verseblock, +div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, +div.admonitionblock { + margin-right: 10%; + margin-top: 1.5em; + margin-bottom: 1.5em; +} +div.admonitionblock { + margin-top: 2.5em; + margin-bottom: 2.5em; +} + +div.content { /* Block element content. */ + padding: 0; +} + +/* Block element titles. */ +div.title, caption.title { + font-family: sans-serif; + font-weight: bold; + text-align: left; + margin-top: 1.0em; + margin-bottom: 0.5em; +} +div.title + * { + margin-top: 0; +} + +td div.title:first-child { + margin-top: 0.0em; +} +div.content div.title:first-child { + margin-top: 0.0em; +} +div.content + div.title { + margin-top: 0.0em; +} + +div.sidebarblock > div.content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} + +div.listingblock > div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock > div.content { + padding-left: 2.0em; +} +div.quoteblock .attribution { + text-align: right; +} + +div.admonitionblock .icon { + vertical-align: top; + font-size: 1.1em; + font-weight: bold; + text-decoration: underline; + color: #527bbd; + padding-right: 0.5em; +} +div.admonitionblock td.content { + padding-left: 0.5em; + border-left: 2px solid silver; +} + +div.exampleblock > div.content { + border-left: 2px solid silver; + padding: 0.5em; +} + +div.verseblock div.content { + white-space: pre; +} + +div.imageblock div.content { padding-left: 0; } +div.imageblock img { border: 1px solid silver; } +span.image img { border-style: none; } + +dl { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +dt { + margin-top: 0.5em; + margin-bottom: 0; + font-style: italic; +} +dd > *:first-child { + margin-top: 0; +} + +ul, ol { + list-style-position: outside; +} +ol.olist2 { + list-style-type: lower-alpha; +} + +div.tableblock > table { + border-color: #527bbd; + border-width: 3px; +} +thead { + font-family: sans-serif; + font-weight: bold; +} +tfoot { + font-weight: bold; +} + +div.hlist { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +td.hlist1 { + vertical-align: top; + font-style: italic; + padding-right: 0.8em; +} +td.hlist2 { + vertical-align: top; +} + +@media print { + div#footer-badges { display: none; } +} +/* Workarounds for IE6's broken and incomplete CSS2. */ + +div.sidebar-content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} +div.sidebar-title, div.image-title { + font-family: sans-serif; + font-weight: bold; + margin-top: 0.0em; + margin-bottom: 0.5em; +} + +div.listingblock div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock-content { + padding-left: 2.0em; +} + +div.exampleblock-content { + border-left: 2px solid silver; + padding-left: 0.5em; +} +</style> +<title>gitattributes API</title> +</head> +<body> +<div id="header"> +<h1>gitattributes API</h1> +</div> +<div id="preamble"> +<div class="sectionbody"> +<p>gitattributes mechanism gives a uniform way to associate various +attributes to set of paths.</p> +</div> +</div> +<h2>Data Structure</h2> +<div class="sectionbody"> +<dl> +<dt> +<tt>struct git_attr</tt> +</dt> +<dd> +<p> + An attribute is an opaque object that is identified by its name. + Pass the name and its length to <tt>git_attr()</tt> function to obtain + the object of this type. The internal representation of this + structure is of no interest to the calling programs. +</p> +</dd> +<dt> +<tt>struct git_attr_check</tt> +</dt> +<dd> +<p> + This structure represents a set of attributes to check in a call + to <tt>git_checkattr()</tt> function, and receives the results. +</p> +</dd> +</dl> +</div> +<h2>Calling Sequence</h2> +<div class="sectionbody"> +<ul> +<li> +<p> +Prepare an array of <tt>struct git_attr_check</tt> to define the list of + attributes you would want to check. To populate this array, you would + need to define necessary attributes by calling <tt>git_attr()</tt> function. +</p> +</li> +<li> +<p> +Call git_checkattr() to check the attributes for the path. +</p> +</li> +<li> +<p> +Inspect <tt>git_attr_check</tt> structure to see how each of the attribute in + the array is defined for the path. +</p> +</li> +</ul> +</div> +<h2>Attribute Values</h2> +<div class="sectionbody"> +<p>An attribute for a path can be in one of four states: Set, Unset, +Unspecified or set to a string, and <tt>.value</tt> member of <tt>struct +git_attr_check</tt> records it. There are three macros to check these:</p> +<dl> +<dt> +<tt>ATTR_TRUE()</tt> +</dt> +<dd> +<p> + Returns true if the attribute is Set for the path. +</p> +</dd> +<dt> +<tt>ATTR_FALSE()</tt> +</dt> +<dd> +<p> + Returns true if the attribute is Unset for the path. +</p> +</dd> +<dt> +<tt>ATTR_UNSET()</tt> +</dt> +<dd> +<p> + Returns true if the attribute is Unspecified for the path. +</p> +</dd> +</dl> +<p>If none of the above returns true, <tt>.value</tt> member points at a string +value of the attribute for the path.</p> +</div> +<h2>Example</h2> +<div class="sectionbody"> +<p>To see how attributes "crlf" and "indent" are set for different paths.</p> +<ol> +<li> +<p> +Prepare an array of <tt>struct git_attr_check</tt> with two elements (because + we are checking two attributes). Initialize their <tt>attr</tt> member with + pointers to <tt>struct git_attr</tt> obtained by calling <tt>git_attr()</tt>: +</p> +</li> +</ol> +<div class="listingblock"> +<div class="content"> +<pre><tt>static struct git_attr_check check[2]; +static void setup_check(void) +{ + if (check[0].attr) + return; /* already done */ + check[0].attr = git_attr("crlf", 4); + check[1].attr = git_attr("ident", 5); +}</tt></pre> +</div></div> +<ol> +<li> +<p> +Call <tt>git_checkattr()</tt> with the prepared array of <tt>struct git_attr_check</tt>: +</p> +</li> +</ol> +<div class="listingblock"> +<div class="content"> +<pre><tt> const char *path; + + setup_check(); + git_checkattr(path, ARRAY_SIZE(check), check);</tt></pre> +</div></div> +<ol> +<li> +<p> +Act on <tt>.value</tt> member of the result, left in <tt>check[]</tt>: +</p> +</li> +</ol> +<div class="listingblock"> +<div class="content"> +<pre><tt> const char *value = check[0].value; + + if (ATTR_TRUE(value)) { + The attribute is Set, by listing only the name of the + attribute in the gitattributes file for the path. + } else if (ATTR_FALSE(value)) { + The attribute is Unset, by listing the name of the + attribute prefixed with a dash - for the path. + } else if (ATTR_UNSET(value)) { + The attribute is not set nor unset for the path. + } else if (!strcmp(value, "input")) { + If none of ATTR_TRUE(), ATTR_FALSE(), or ATTR_UNSET() is + true, the value is a string set in the gitattributes + file for the path by saying "attr=value". + } else if (... other check using value as string ...) { + ... + }</tt></pre> +</div></div> +<p>(JC)</p> +</div> +<div id="footer"> +<div id="footer-text"> +Last updated 15-Dec-2007 08:39:59 UTC +</div> +</div> +</body> +</html>